A computer network typically comprises a collection of interconnected nodes, such as computer systems and switches, which may, in turn, be connected through an irregular configuration of transmission lines, i.e., links. The switches arc specialized computers used to connect two or more links. Data is exchanged among nodes of such an "arbitrary-topology" network by passing packets from switch to switch over the links. Specifically, when a packet arrives on an incoming link, the switch decides onto which of the outgoing links that packet will be forwarded.
In a connection-oriented network, a virtual circuit is commonly established when exchanging packets between nodes of the network. The virtual circuit is a temporary logical path connection that requires a set up procedure to "open" the virtual circuit prior to transferring the data packets and a release procedure to "close" the circuit once the data transfer is complete. This obviates the need for effecting routing decisions for each data packet that is transferred between the nodes once the circuit is opened. In addition, the virtual circuit minimizes the overhead required for exchanging packets in the network by enabling use of a relatively short virtual circuit (VC) number in the header field of a packet instead of longer source and destination addresses.
For point-to-point communication, the set up procedure creates a virtual circuit by allocating certain switches and links in the network to establish the "best" route, according to conventional route configuration techniques, between a source node and a destination node. To illustrate, refer to FIG. 1A. Here, node A of network 10 performs a set up procedure to open a virtual circuit route that encompasses the switches S.sub.A-D. This route is identified by a VC number, VC2, that is associated with node A's local switch S.sub.A. In order to ensure that data packets subsequently transferred from node A always follow this virtual circuit route to node D, each switch along VC2 maintains a forwarding table with entries indicating where to forward the data packets in accordance with the routing configuration results.
FIG. 1B illustrates the forwarding tables 20a-d contained within the switches S.sub.A-D, of the network 10. Each entry of the tables includes an incoming portion and an outgoing portion, with each portion including a port name and a VC number associated with that port. Each data packet transferred over the network contains a VC field identifying the open VC number on which it has arrived. Thus, when a packet is received at an incoming port of switch S.sub.C, that switch searches the left (incoming) portion 22i of its table 20c, using the incoming port, e.g., Z, and VC number found in the packet. e.g., VC7, as the key. When a match is found, the outgoing portion 22o of the entry identifies the VC number, e.g., VC4, to insert into the VC field of the packet and the port, e.g., Q, to which it should pass the packet. It is thus apparent that the VC numbers and forwarding tables provide enough information to guide the data packets through the allocated switches and links to the destination.
Multicasting involves transmitting a single packet from a source node and having it received by a group of destination nodes. One way to implement this type of point-to-multipoint communication is via a "spanning tree", i.e., a subset of nodes and links in the network in which exactly one path is defined between any pair of nodes. The spanning tree is typically calculated by the nodes using conventional spanning tree algorithms. For example, when a multicast packet arrives at an incoming port of a switch, that switch checks a list of destination nodes contained in the packet to select a set of outgoing ports that will provide the best path to at least one of the destination nodes. This group of incoming and outgoing ports is called a multicast port group. The switch stores routing information relating to the multicast port group in its forwarding table.
Since each node maintains its own routing information, it can transmit an incoming multicast packet onto all spanning tree ports and links except the one on which the packet arrived; thus, the multicast packets traverse the tree to reach each destination node. Although this method makes excellent use of bandwidth, transmission of certain, high-priority packets through the network may be "delayed" because of the varying sizes of packets. For example, transfer of a high-priority, 10-byte packet through a multicast port group may be delayed until all bytes of a 100,000-byte packet are transferred through those ports.
In order to minimize this delay, some networks apportion each packet into mini-packets called cells. Each cell carries minimal addressing information, with the first cell containing the source and destination addresses, and all of the remaining cells containing merely a VC number. The cells do not contain information specifying the succession of the cells. Therefore, the sequence of the cells transmitted from a source node through a switch must be preserved in order to ensure that the cells can be reassembled into a complete packet at a destination node.
One way to ensure the order of transmitted cells is to prohibit simultaneous transfer of multicast packets through a switch. According to this approach, all outgoing ports selected by a switch for transfer of a multicast packet must be "free", i.e., there must be no data traffic flowing through the ports and over the links, before the packet can be forwarded over those links. If any of the outgoing ports are "busy", the multicast packet is stored in an internal buffer of the switch. Later, when all of the required ports are free, copies of the packet are transmitted over the links at once. However, this approach degrades the efficiency of the network, particularly because of the latency imposed on the transfer of different multicast packets through the switch.
Another approach for maintaining the sequence of cells transmitted over the network involves sending all multicast packets to a single point, i.e., a designated switch, which then forwards the cells, in succession, to their destinations. However, it is apparent that this approach may significantly decrease the throughput of the network.
Maintaining the order of transmitted cells is particularly significant in a multicast, cell-switched network with multiple sources. Because the virtual circuits of the network may have common destinations, packet cells from different sources propagating through a common multicast group of ports in a switch may have the same VC number. If the cells become interleaved, there is not enough routing information in the cells to reassemble them into complete packets at a destination node.
Therefore, it is among the objects of the invention to provide a novel method and apparatus for maintaining the sequence of packet cells transmitted from multiple sources in a cell-switched network.